/**
 * 安全区域工具类
 * 用于动态计算设备安全区域信息
 */

// 获取系统信息
function getSystemInfo() {
  try {
    return uni.getSystemInfoSync();
  } catch (error) {
    console.error('获取系统信息失败:', error);
    return null;
  }
}

// 获取状态栏高度
function getStatusBarHeight() {
  const systemInfo = getSystemInfo();
  return systemInfo ? systemInfo.statusBarHeight || 20 : 20;
}

// 获取胶囊按钮信息（仅微信小程序）
function getMenuButtonBoundingClientRect() {
  // #ifdef MP-WEIXIN
  try {
    const menuButtonInfo = uni.getMenuButtonBoundingClientRect();
    return menuButtonInfo;
  } catch (error) {
    console.error('获取胶囊按钮信息失败:', error);
  }
  // #endif
  return null;
}

// 计算自定义导航栏高度
function getCustomNavHeight() {
  const systemInfo = getSystemInfo();
  if (!systemInfo) return 44; // 默认高度

  // #ifdef MP-WEIXIN
  // 微信小程序使用胶囊按钮信息计算
  const menuButtonInfo = getMenuButtonBoundingClientRect();
  if (menuButtonInfo && menuButtonInfo.top) {
    // 使用胶囊按钮顶部位置 + 胶囊按钮高度 + 10px 作为导航栏高度
    return menuButtonInfo.top + menuButtonInfo.height + 10;
  }
  // #endif

  // 其他平台使用状态栏高度+默认导航栏高度
  const statusBarHeight = getStatusBarHeight();
  // 确保最小高度为44px
  const navHeight = statusBarHeight + 44;
  return Math.max(navHeight, 44);
}

// 设置CSS变量
function setSafeAreaCSSVars() {
  const customNavHeight = getCustomNavHeight();
  const statusBarHeight = getStatusBarHeight();
  
  // 返回计算结果，供调用方使用
  return {
    '--custom-nav-height': customNavHeight + 'px',
    '--status-bar-height': statusBarHeight + 'px',
    customNavHeight,
    statusBarHeight
  };
}

export {
  getSystemInfo,
  getStatusBarHeight,
  getMenuButtonBoundingClientRect,
  getCustomNavHeight,
  setSafeAreaCSSVars
};